#ifndef BDLIVRO_H_
#define BDLIVRO_H_

#include <string>
#include <vector>
#include "../estruturas/ArvoreV.h"
#include "Livro.h"
using namespace std;

/**
 *  \brief Classe para gerenciamento de Livros
 *
 *  Faz o acesso aos dados dos livros e permite
 *  a pesquisa por interesse
 */
class BDLivro
{
private:

	/**
	 * \brief Nome do arquivo que contém os dados dos livros
	 */
	string ArqDados;

	/**
	 * \brief Valor do próximo ID disponível para um novo Livro
	 */
	long ProximoID;

	/**
	 * \brief Vetor com os dados de todos os livros
	 */
	vector<Livro> Dados;

	/**
	 * \brief Árvore binária para pesquisa por interesse
	 */
	ArvoreV<string, Livro> Pesquisa;

public:

	BDLivro();
	virtual ~BDLivro();

	void CarregaLivros();
	void SalvaLivros();
	void MontaPesquisa(int tipo);
	Livro Seleciona(long id);
 	void Remove(long id);
    long GetProximoID();
    void Adiciona(long ID, Livro novo);
	void Primeiro();
 	void Proximo();
 	bool Final();
    Livro GetItem();
    vector<Livro> PesquisaInteresses(string valor);

};

#endif /*BDLIVRO_H_*/
